package com.hlf.common.utils;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期处理
 *
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2016年12月21日 下午12:53:33
 */
public class DateUtils {
    /**
     * 时间格式(yyyy-MM-dd)
     */
    public static final String DATE_PATTERN = "yyyy-MM-dd";
    /**
     * 时间格式(yyyy-MM-dd HH:mm:ss)
     */
    public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";

    public static String format(Date date) {
        return format(date, DATE_PATTERN);
    }

    public static String format(Date date, String pattern) {
        if (date != null) {
            SimpleDateFormat df = new SimpleDateFormat(pattern);
            return df.format(date);
        }
        return null;
    }


    /**
     * 日期格式枚举类
     *
     * @author shuliangxing
     * @date 2015-4-29下午2:13:44
     */
    public enum DateStyle {

        YYYY_MM("yyyy-MM", false),

        YYYY_MM_DD("yyyy-MM-dd", false),

        YYYYMMDD("yyyyMMdd", false),

        YYYY_MM_DD_HH_MM("yyyy-MM-dd HH:mm", false),

        YYYY_MM_DD_HH_MM_SS("yyyy-MM-dd HH:mm:ss", false),

        YYYYMMDDHHMMSS("yyyyMMddHHmmss", false),

        YYYYMMDDHHMMSS_SSS("yyyyMMddHHmmssSSS", false),

        YYYY_MM_EN("yyyy/MM", false),

        YYYY_MM_DD_EN("yyyy/MM/dd", false),

        YYYY_MM_DD_HH_MM_EN("yyyy/MM/dd HH:mm", false),

        YYYY_MM_DD_HH_MM_SS_EN("yyyy/MM/dd HH:mm:ss", false),

        YYYY_MM_CN("yyyy年MM月", false),

        YYYY_MM_DD_CN("yyyy年MM月dd日", false),

        YYYY_MM_DD_HH_MM_CN("yyyy年MM月dd日 HH:mm", false),

        YYYY_MM_DD_HH_MM_SS_CN("yyyy年MM月dd日 HH:mm:ss", false),

        HH_MM("HH:mm", true),

        HH_MM_SS("HH:mm:ss", true),

        MM_DD("MM-dd", true),

        MM_DD_HH_MM("MM-dd HH:mm", true),

        MM_DD_HH_MM_SS("MM-dd HH:mm:ss", true),

        MM_DD_EN("MM/dd", true),

        MM_DD_HH_MM_EN("MM/dd HH:mm", true),

        MM_DD_HH_MM_SS_EN("MM/dd HH:mm:ss", true),

        MM_DD_CN("MM月dd日", true),

        MM_DD_HH_MM_CN("MM月dd日 HH:mm", true),

        MM_DD_HH_MM_SS_CN("MM月dd日 HH:mm:ss", true);

        private String value;

        private boolean isShowOnly;

        DateStyle(String value, boolean isShowOnly) {
            this.value = value;
            this.isShowOnly = isShowOnly;
        }

        public String getValue() {
            return value;
        }

        public boolean isShowOnly() {
            return isShowOnly;
        }
    }
}